package com.rpframework.website.device.service;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.rpframework.core.BaseService;
import com.rpframework.utils.NumberUtils;
import com.rpframework.utils.Pager;
import com.rpframework.website.device.dao.IGoodsStockDao;
import com.rpframework.website.device.domain.Goods;
import com.rpframework.website.device.domain.GoodsStock;
import com.rpframework.website.device.util.HConstants;

@Service
public class GoodsStockService extends BaseService {
	public @Resource IGoodsStockDao iDao;
	@Resource GoodsService goodsService;
	@Resource GoodsStockRecordService recordService;
	
	public Pager<GoodsStock> getPager(Pager<GoodsStock> pager) {
		long startTime = System.currentTimeMillis();
		List<GoodsStock> list = iDao.doPager(this.packageMyBatisParam(pager));
		pager.setItemList(list);
		pager.setCostTime(System.currentTimeMillis() - startTime);
		return pager;
	}
	
	/**
	 * 修改状态
	 * @param id
	 * @return
	 * @time 2016年3月24日 上午10:02:46
	 */
	public boolean doUpdateState(Integer id) {
		if(NumberUtils.isValid(id)){
			GoodsStock t = iDao.select(id);
			if(t.getState() == HConstants.EntityState.STATE_NORMAL){
				t.setState(HConstants.EntityState.STATE_DISABLE);
			}else{
				t.setState(HConstants.EntityState.STATE_NORMAL);
			}
			t.setModifyTime(System.currentTimeMillis()/1000);
			return iDao.update(t);
		}
		return false;
	}
	/**
	 * 更新或新增库存
	 * @param dbUtils
	 * @param relativeId
	 * @param t
	 * @param goods 
	 * @return
	 * @time 2016年4月5日 下午3:20:24
	 */
	public boolean saveOrUpdate(GoodsStock dbUtils, Integer relativeId, GoodsStock t, Goods goods) {
		boolean f1 = false;
		if(dbUtils == null){
			 t.setGoodsName(goods.getName());
			 t.setGoodsOldPrice(goods.getOldPrice());
			 t.setGoodsDisPrice(goods.getDisPrice());
			 t.setGoodsUrlList(goods.getUrlList());
			 t.setGoodsPoint(goods.getPoint());
		 	 t.setCreateTime(System.currentTimeMillis() / 1000);
			 t.setState(HConstants.EntityState.STATE_NORMAL);
			 t.setRelativeId(relativeId);//后台管理员登录管理的物业id 0是超级管理员
			 f1 = iDao.insert(t);
		 }else{
			 dbUtils.setGoodsName(goods.getName());
			 dbUtils.setGoodsOldPrice(goods.getOldPrice());
			 dbUtils.setGoodsDisPrice(goods.getDisPrice());
			 dbUtils.setGoodsUrlList(goods.getUrlList());
			 dbUtils.setModifyTime(System.currentTimeMillis() / 1000);
			 dbUtils.setState(HConstants.EntityState.STATE_NORMAL);
			 dbUtils.setRelativeId(relativeId);//后台管理员登录管理的物业id 0是超级管理员
			 dbUtils.setAmount(dbUtils.getAmount()+t.getAmount());
			 f1 = iDao.update(dbUtils);
		 }
		return f1;
	}

	/**
	 * 查询某物业或平台某商品的现有库存
	 * @param goodsId
	 * @param relativeId
	 * @return
	 * @time 2016年4月1日 上午11:58:58
	 */
	public GoodsStock searchStock(Integer goodsId, Integer relativeId) {
		return iDao.searchStock(goodsId, relativeId);
	}

	public Double getGoodsStockAmount(Integer goodsId) {
		return iDao.doStockAmount(goodsId);
	}
}
